#!/usr/bin/python3
# _*_ coding: utf-8 _*_
#
# Copyright (C) 2024 - 2024 heihieyouheihei, Inc. All Rights Reserved 
#
# @Time    : 2024/8/23 23:14
# @Author  : Yuyun
# @File    : leetcode_496_下一个更大元素I.py
# @IDE     : PyCharm

"""
nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。
给你两个 没有重复元素 的数组 nums1 和 nums2 ，下标从 0 开始计数，其中nums1 是 nums2 的子集。
对于每个 0 <= i < nums1.length ，找出满足 nums1[i] == nums2[j] 的下标 j ，
并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素，那么本次查询的答案是 -1 。
返回一个长度为 nums1.length 的数组 ans 作为答案，满足 ans[i] 是如上所述的 下一个更大元素 。

示例 1：
输入：nums1 = [4,1,2], nums2 = [1,3,4,2].
输出：[-1,3,-1]
解释：nums1 中每个值的下一个更大元素如下所述：
- 4 ，用加粗斜体标识，nums2 = [1,3,4,2]。不存在下一个更大元素，所以答案是 -1 。
- 1 ，用加粗斜体标识，nums2 = [1,3,4,2]。下一个更大元素是 3 。
- 2 ，用加粗斜体标识，nums2 = [1,3,4,2]。不存在下一个更大元素，所以答案是 -1 。

示例 2：
输入：nums1 = [2,4], nums2 = [1,2,3,4].
输出：[3,-1]
解释：nums1 中每个值的下一个更大元素如下所述：
- 2 ，用加粗斜体标识，nums2 = [1,2,3,4]。下一个更大元素是 3 。
- 4 ，用加粗斜体标识，nums2 = [1,2,3,4]。不存在下一个更大元素，所以答案是 -1 。

提示：
1 <= nums1.length <= nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 104
nums1和nums2中所有整数 互不相同
nums1 中的所有整数同样出现在 nums2 中

进阶：你可以设计一个时间复杂度为 O(nums1.length + nums2.length) 的解决方案吗？
"""

class Solution:
    def next_bigger_number(self, nums1, nums2):
        length = len(nums1)
        #   存储结果
        result = [-1] * length
        #   存储下标
        stack = []
        for i in range(len(nums2)):
            #   存储下标的栈不为空 且 当前nums2值 > 栈顶下标对应的nums2值
            while stack and nums2[i] > nums2[stack[-1]]:
                #   如果栈顶下标对应的nums2值，在nums1中（nums1、nums2中元素均不重复）
                if nums2[stack[-1]] in nums1:
                    index = nums1.index(nums2[stack[-1]])
                    #   则nums1对应位置存储当前nums2值
                    result[index] = nums2[i]
                #   弹出栈顶下标值
                stack.pop()
            #   其他情况，nums2下标压栈
            stack.append(i)
        return result

if __name__ == '__main__':
    nums1 = list(map(int, input().split(',')))
    nums2 = list(map(int, input().split(',')))
    solution = Solution()
    result = solution.next_bigger_number(nums1, nums2)
    print(result)